The idea is that we want to get information about how crime evolved. Here we could have done a loop, but could not yet find a way to properly do it. We have created a data set for each year. The results are interesting. If we compare how many observations we have in each crime-per year data sets, we see that we have ~40.000ish cases a year except from 2020 (which is due to COVID) and the year 2021 (which is not finished. We don’t make any datasets for the year 2013 and below, because we see that we have not many observations which date prior to the year 2013. The graph represent the monthly evolution of crime for each year. We see that there seems to be a sort of pattern and that, each year, crime increases mid-year before decreasing in december.
Next, we calculate the crime per capita for each year with the piping operator, grouping by community and summarize the rates. In the end we create the crime evolution data sets which is a combination of all the data.
Another interesting way to visualise how crime evolved is by using an animated map. We can create animated maps using the tmap_animation function. Yet, in order to be in position to use it, we have to create a very particular tibble. In the case at hand, we want our animated map to display crime per capita evolution over 7 years (from 2014 to 2020, we get ride of 2021 as the year is not complete). Therefore, we must have 7 x 56 observations, one crime per capita value for each year, for each 56 area. Yet, the tibble becomes a bit more peculiar as for each observation, we have to add a in a separate column, a polygon (which is an S4 element) corresponding to the area in question. It is not possible to use a function like the rep function to replicate S4 elements, therefore, we had to do that manually.
Once the tibble is built, we want to merge the data contained in it in a SpatialPolygonsDataFrame. We want to use the baltimore SpatialPolygonsDataFrame.However, as the tibble contains 392 observations, this will enlarge our our SpatialPolygonsDataFrame. As the baltimore object is also used for other purposes, we create an alias. Then, we merge the newly created tibble with the newly created alias, simply using left_join. We create the bbox object as well as an object called pb. The first element allows us to delimit the geographical area of interest and the second allows us to create custom classes. Finally, we crate a map using the tm_shape function. We animate the latter using tmap_animation.
anim_tibble <- tibble(Year=rep(2020:2014,56),Community=rep(Community_data$Community,each=7),CrimeRate=as.vector(t(crime_evolution[,-c(1,2,3,4,6,8,10,12,14,16)])),geometry=list(
baltimore@polygons[[1]],baltimore@polygons[[1]],baltimore@polygons[[1]],baltimore@polygons[[1]],baltimore@polygons[[1]],baltimore@polygons[[1]],baltimore@polygons[[1]],
baltimore@polygons[[2]],baltimore@polygons[[2]],baltimore@polygons[[2]],baltimore@polygons[[2]],baltimore@polygons[[2]],baltimore@polygons[[2]],baltimore@polygons[[2]],
baltimore@polygons[[3]],baltimore@polygons[[3]],baltimore@polygons[[3]],baltimore@polygons[[3]],baltimore@polygons[[3]],baltimore@polygons[[3]],baltimore@polygons[[3]],
baltimore@polygons[[4]],baltimore@polygons[[4]],baltimore@polygons[[4]],baltimore@polygons[[4]],baltimore@polygons[[4]],baltimore@polygons[[4]],baltimore@polygons[[4]],
baltimore@polygons[[5]],baltimore@polygons[[5]],baltimore@polygons[[5]],baltimore@polygons[[5]],baltimore@polygons[[5]],baltimore@polygons[[5]],baltimore@polygons[[5]],
baltimore@polygons[[6]],baltimore@polygons[[6]],baltimore@polygons[[6]],baltimore@polygons[[6]],baltimore@polygons[[6]],baltimore@polygons[[6]],baltimore@polygons[[6]],
baltimore@polygons[[7]],baltimore@polygons[[7]],baltimore@polygons[[7]],baltimore@polygons[[7]],baltimore@polygons[[7]],baltimore@polygons[[7]],baltimore@polygons[[7]],
baltimore@polygons[[8]],baltimore@polygons[[8]],baltimore@polygons[[8]],baltimore@polygons[[8]],baltimore@polygons[[8]],baltimore@polygons[[8]],baltimore@polygons[[8]],
baltimore@polygons[[9]],baltimore@polygons[[9]],baltimore@polygons[[9]],baltimore@polygons[[9]],baltimore@polygons[[9]],baltimore@polygons[[9]],baltimore@polygons[[9]],
baltimore@polygons[[10]],baltimore@polygons[[10]],baltimore@polygons[[10]],baltimore@polygons[[10]],baltimore@polygons[[10]],baltimore@polygons[[10]],baltimore@polygons[[10]],
baltimore@polygons[[11]],baltimore@polygons[[11]],baltimore@polygons[[11]],baltimore@polygons[[11]],baltimore@polygons[[11]],baltimore@polygons[[11]],baltimore@polygons[[11]],
baltimore@polygons[[12]],baltimore@polygons[[12]],baltimore@polygons[[12]],baltimore@polygons[[12]],baltimore@polygons[[12]],baltimore@polygons[[12]],baltimore@polygons[[12]],
baltimore@polygons[[13]],baltimore@polygons[[13]],baltimore@polygons[[13]],baltimore@polygons[[13]],baltimore@polygons[[13]],baltimore@polygons[[13]],baltimore@polygons[[13]],
baltimore@polygons[[14]],baltimore@polygons[[14]],baltimore@polygons[[14]],baltimore@polygons[[14]],baltimore@polygons[[14]],baltimore@polygons[[14]],baltimore@polygons[[14]],
baltimore@polygons[[15]],baltimore@polygons[[15]],baltimore@polygons[[15]],baltimore@polygons[[15]],baltimore@polygons[[15]],baltimore@polygons[[15]],baltimore@polygons[[15]],
baltimore@polygons[[16]],baltimore@polygons[[16]],baltimore@polygons[[16]],baltimore@polygons[[16]],baltimore@polygons[[16]],baltimore@polygons[[16]],baltimore@polygons[[16]],
baltimore@polygons[[17]],baltimore@polygons[[17]],baltimore@polygons[[17]],baltimore@polygons[[17]],baltimore@polygons[[17]],baltimore@polygons[[17]],baltimore@polygons[[17]],
baltimore@polygons[[18]],baltimore@polygons[[18]],baltimore@polygons[[18]],baltimore@polygons[[18]],baltimore@polygons[[18]],baltimore@polygons[[18]],baltimore@polygons[[18]],
baltimore@polygons[[19]],baltimore@polygons[[19]],baltimore@polygons[[19]],baltimore@polygons[[19]],baltimore@polygons[[19]],baltimore@polygons[[19]],baltimore@polygons[[19]],
baltimore@polygons[[20]],baltimore@polygons[[20]],baltimore@polygons[[20]],baltimore@polygons[[20]],baltimore@polygons[[20]],baltimore@polygons[[20]],baltimore@polygons[[20]],
baltimore@polygons[[21]],baltimore@polygons[[21]],baltimore@polygons[[21]],baltimore@polygons[[21]],baltimore@polygons[[21]],baltimore@polygons[[21]],baltimore@polygons[[21]],
baltimore@polygons[[22]],baltimore@polygons[[22]],baltimore@polygons[[22]],baltimore@polygons[[22]],baltimore@polygons[[22]],baltimore@polygons[[22]],baltimore@polygons[[22]],
baltimore@polygons[[23]],baltimore@polygons[[23]],baltimore@polygons[[23]],baltimore@polygons[[23]],baltimore@polygons[[23]],baltimore@polygons[[23]],baltimore@polygons[[23]],
baltimore@polygons[[24]],baltimore@polygons[[24]],baltimore@polygons[[24]],baltimore@polygons[[24]],baltimore@polygons[[24]],baltimore@polygons[[24]],baltimore@polygons[[24]],
baltimore@polygons[[25]],baltimore@polygons[[25]],baltimore@polygons[[25]],baltimore@polygons[[25]],baltimore@polygons[[25]],baltimore@polygons[[25]],baltimore@polygons[[25]],
baltimore@polygons[[26]],baltimore@polygons[[26]],baltimore@polygons[[26]],baltimore@polygons[[26]],baltimore@polygons[[26]],baltimore@polygons[[26]],baltimore@polygons[[26]],
baltimore@polygons[[27]],baltimore@polygons[[27]],baltimore@polygons[[27]],baltimore@polygons[[27]],baltimore@polygons[[27]],baltimore@polygons[[27]],baltimore@polygons[[27]],
baltimore@polygons[[28]],baltimore@polygons[[28]],baltimore@polygons[[28]],baltimore@polygons[[28]],baltimore@polygons[[28]],baltimore@polygons[[28]],baltimore@polygons[[28]],
baltimore@polygons[[29]],baltimore@polygons[[29]],baltimore@polygons[[29]],baltimore@polygons[[29]],baltimore@polygons[[29]],baltimore@polygons[[29]],baltimore@polygons[[29]],
baltimore@polygons[[30]],baltimore@polygons[[30]],baltimore@polygons[[30]],baltimore@polygons[[30]],baltimore@polygons[[30]],baltimore@polygons[[30]],baltimore@polygons[[30]],
baltimore@polygons[[31]],baltimore@polygons[[31]],baltimore@polygons[[31]],baltimore@polygons[[31]],baltimore@polygons[[31]],baltimore@polygons[[31]],baltimore@polygons[[31]],
baltimore@polygons[[32]],baltimore@polygons[[32]],baltimore@polygons[[32]],baltimore@polygons[[32]],baltimore@polygons[[32]],baltimore@polygons[[32]],baltimore@polygons[[32]],
baltimore@polygons[[33]],baltimore@polygons[[33]],baltimore@polygons[[33]],baltimore@polygons[[33]],baltimore@polygons[[33]],baltimore@polygons[[33]],baltimore@polygons[[33]],
baltimore@polygons[[34]],baltimore@polygons[[34]],baltimore@polygons[[34]],baltimore@polygons[[34]],baltimore@polygons[[34]],baltimore@polygons[[34]],baltimore@polygons[[34]],
baltimore@polygons[[35]],baltimore@polygons[[35]],baltimore@polygons[[35]],baltimore@polygons[[35]],baltimore@polygons[[35]],baltimore@polygons[[35]],baltimore@polygons[[35]],
baltimore@polygons[[36]],baltimore@polygons[[36]],baltimore@polygons[[36]],baltimore@polygons[[36]],baltimore@polygons[[36]],baltimore@polygons[[36]],baltimore@polygons[[36]],
baltimore@polygons[[37]],baltimore@polygons[[37]],baltimore@polygons[[37]],baltimore@polygons[[37]],baltimore@polygons[[37]],baltimore@polygons[[37]],baltimore@polygons[[37]],
baltimore@polygons[[38]],baltimore@polygons[[38]],baltimore@polygons[[38]],baltimore@polygons[[38]],baltimore@polygons[[38]],baltimore@polygons[[38]],baltimore@polygons[[38]],
baltimore@polygons[[39]],baltimore@polygons[[39]],baltimore@polygons[[39]],baltimore@polygons[[39]],baltimore@polygons[[39]],baltimore@polygons[[39]],baltimore@polygons[[39]],
baltimore@polygons[[40]],baltimore@polygons[[40]],baltimore@polygons[[40]],baltimore@polygons[[40]],baltimore@polygons[[40]],baltimore@polygons[[40]],baltimore@polygons[[40]],
baltimore@polygons[[41]],baltimore@polygons[[41]],baltimore@polygons[[41]],baltimore@polygons[[41]],baltimore@polygons[[41]],baltimore@polygons[[41]],baltimore@polygons[[41]],
baltimore@polygons[[42]],baltimore@polygons[[42]],baltimore@polygons[[42]],baltimore@polygons[[42]],baltimore@polygons[[42]],baltimore@polygons[[42]],baltimore@polygons[[42]],
baltimore@polygons[[43]],baltimore@polygons[[43]],baltimore@polygons[[43]],baltimore@polygons[[43]],baltimore@polygons[[43]],baltimore@polygons[[43]],baltimore@polygons[[43]],
baltimore@polygons[[44]],baltimore@polygons[[44]],baltimore@polygons[[44]],baltimore@polygons[[44]],baltimore@polygons[[44]],baltimore@polygons[[44]],baltimore@polygons[[44]],
baltimore@polygons[[45]],baltimore@polygons[[45]],baltimore@polygons[[45]],baltimore@polygons[[45]],baltimore@polygons[[45]],baltimore@polygons[[45]],baltimore@polygons[[45]],
baltimore@polygons[[46]],baltimore@polygons[[46]],baltimore@polygons[[46]],baltimore@polygons[[46]],baltimore@polygons[[46]],baltimore@polygons[[46]],baltimore@polygons[[46]],
baltimore@polygons[[47]],baltimore@polygons[[47]],baltimore@polygons[[47]],baltimore@polygons[[47]],baltimore@polygons[[47]],baltimore@polygons[[47]],baltimore@polygons[[47]],
baltimore@polygons[[48]],baltimore@polygons[[48]],baltimore@polygons[[48]],baltimore@polygons[[48]],baltimore@polygons[[48]],baltimore@polygons[[48]],baltimore@polygons[[48]],
baltimore@polygons[[49]],baltimore@polygons[[49]],baltimore@polygons[[49]],baltimore@polygons[[49]],baltimore@polygons[[49]],baltimore@polygons[[49]],baltimore@polygons[[49]],
baltimore@polygons[[50]],baltimore@polygons[[50]],baltimore@polygons[[50]],baltimore@polygons[[50]],baltimore@polygons[[50]],baltimore@polygons[[50]],baltimore@polygons[[50]],
baltimore@polygons[[51]],baltimore@polygons[[51]],baltimore@polygons[[51]],baltimore@polygons[[51]],baltimore@polygons[[51]],baltimore@polygons[[51]],baltimore@polygons[[51]],
baltimore@polygons[[52]],baltimore@polygons[[52]],baltimore@polygons[[52]],baltimore@polygons[[52]],baltimore@polygons[[52]],baltimore@polygons[[52]],baltimore@polygons[[52]],
baltimore@polygons[[53]],baltimore@polygons[[53]],baltimore@polygons[[53]],baltimore@polygons[[53]],baltimore@polygons[[53]],baltimore@polygons[[53]],baltimore@polygons[[53]],
baltimore@polygons[[54]],baltimore@polygons[[54]],baltimore@polygons[[54]],baltimore@polygons[[54]],baltimore@polygons[[54]],baltimore@polygons[[54]],baltimore@polygons[[54]],
baltimore@polygons[[55]],baltimore@polygons[[55]],baltimore@polygons[[55]],baltimore@polygons[[55]],baltimore@polygons[[55]],baltimore@polygons[[55]],baltimore@polygons[[55]],
baltimore@polygons[[56]],baltimore@polygons[[56]],baltimore@polygons[[56]],baltimore@polygons[[56]],baltimore@polygons[[56]],baltimore@polygons[[56]],baltimore@polygons[[56]]))
baltimore_alias <- baltimore
baltimore_alias@polygons <- anim_tibble$geometry
baltimore_alias@data$community %in% anim_tibble$Community #Again, we ensure that we have a perfect match
baltimore_alias@data <-left_join(baltimore_alias@data,anim_tibble,by = c('community' = 'Community'))
bbox <- baltimore@bbox
pb <- c(0,25,50,75,100,125,150,175,200,225,250)
animated_crime_map <- tm_shape(baltimore_alias,bbox = bbox, projection = crs.geo1) +
tm_polygons("CrimeRate",breaks=pb) +
tm_facets(free.scales.fill = F,along = "Year")+tm_shape(baltimore)+tm_borders()
tmap_animation(animated_crime_map, delay=100)
#maybe write.gif
We can make the exact same computation to calculate violent crime and property crime evolution.
Violent_Crime_in_2021 <- crime_data_with_areas %>% filter(CrimeDateTime >= as.Date("2021-01-01") & CrimeDateTime <= as.Date("2021-12-31")) %>% filter(VIO_PROP_CFS=="VIOLENT")
Violent_Crime_in_2020 <- crime_data_with_areas %>% filter(CrimeDateTime >= as.Date("2020-01-01") & CrimeDateTime <= as.Date("2020-12-31")) %>% filter(VIO_PROP_CFS=="VIOLENT")
Violent_Crime_in_2019 <- crime_data_with_areas %>% filter(CrimeDateTime >= as.Date("2019-01-01") & CrimeDateTime <= as.Date("2019-12-31")) %>% filter(VIO_PROP_CFS=="VIOLENT")
Violent_Crime_in_2018 <- crime_data_with_areas %>% filter(CrimeDateTime >= as.Date("2018-01-01") & CrimeDateTime <= as.Date("2018-12-31")) %>% filter(VIO_PROP_CFS=="VIOLENT")
Violent_Crime_in_2017 <- crime_data_with_areas %>% filter(CrimeDateTime >= as.Date("2017-01-01") & CrimeDateTime <= as.Date("2017-12-31")) %>% filter(VIO_PROP_CFS=="VIOLENT")
Violent_Crime_in_2016 <- crime_data_with_areas %>% filter(CrimeDateTime >= as.Date("2016-01-01") & CrimeDateTime <= as.Date("2016-12-31")) %>% filter(VIO_PROP_CFS=="VIOLENT")
Violent_Crime_in_2015 <- crime_data_with_areas %>% filter(CrimeDateTime >= as.Date("2015-01-01") & CrimeDateTime <= as.Date("2015-12-31")) %>% filter(VIO_PROP_CFS=="VIOLENT")
Violent_Crime_in_2014 <- crime_data_with_areas %>% filter(CrimeDateTime >= as.Date("2014-01-01") & CrimeDateTime <= as.Date("2014-12-31")) %>% filter(VIO_PROP_CFS=="VIOLENT")
ViolentCrimePerCapitaPerArea2021 <- Violent_Crime_in_2021 %>%
group_by(Community) %>%
summarize(ViolentCrimeFrequency21=n())
ViolentCrimePerCapitaPerArea2021 <- mutate(ViolentCrimePerCapitaPerArea2021,ViolentCrimePer1000inhabitants21=((ViolentCrimePerCapitaPerArea2021$ViolentCrimeFrequency21/population_data$tpop20)*1000))
ViolentCrimePerCapitaPerArea2021 <- rbind(ViolentCrimePerCapitaPerArea2021,list("Unassigned -- Jail",0,0))
ViolentCrimePerCapitaPerArea2020 <- Violent_Crime_in_2020 %>%
group_by(Community) %>%
summarize(ViolentCrimeFrequency20=n())
ViolentCrimePerCapitaPerArea2020 <- mutate(ViolentCrimePerCapitaPerArea2020,ViolentCrimePer1000inhabitants20=((ViolentCrimePerCapitaPerArea2020$ViolentCrimeFrequency20/population_data$tpop20)*1000))
ViolentCrimePerCapitaPerArea2020 <- rbind(ViolentCrimePerCapitaPerArea2020,list("Unassigned -- Jail",0,0))
ViolentCrimePerCapitaPerArea2019 <- Violent_Crime_in_2019 %>%
group_by(Community) %>%
summarize(ViolentCrimeFrequency19=n())
ViolentCrimePerCapitaPerArea2019 <- mutate(ViolentCrimePerCapitaPerArea2019,ViolentCrimePer1000inhabitants19=((ViolentCrimePerCapitaPerArea2019$ViolentCrimeFrequency19/population_data$tpop20)*1000))
ViolentCrimePerCapitaPerArea2019 <- rbind(ViolentCrimePerCapitaPerArea2019,list("Unassigned -- Jail",0,0))
ViolentCrimePerCapitaPerArea2018 <- Violent_Crime_in_2018 %>%
group_by(Community) %>%
summarize(ViolentCrimeFrequency18=n())
ViolentCrimePerCapitaPerArea2018 <- mutate(ViolentCrimePerCapitaPerArea2018,ViolentCrimePer1000inhabitants18=((ViolentCrimePerCapitaPerArea2018$ViolentCrimeFrequency18/population_data$tpop20)*1000))
ViolentCrimePerCapitaPerArea2018 <- rbind(ViolentCrimePerCapitaPerArea2018,list("Unassigned -- Jail",0,0))
ViolentCrimePerCapitaPerArea2017 <- Violent_Crime_in_2017 %>%
group_by(Community) %>%
summarize(ViolentCrimeFrequency17=n())
ViolentCrimePerCapitaPerArea2017 <- mutate(ViolentCrimePerCapitaPerArea2017,ViolentCrimePer1000inhabitants17=((ViolentCrimePerCapitaPerArea2017$ViolentCrimeFrequency17/population_data$tpop20)*1000))
ViolentCrimePerCapitaPerArea2017 <- rbind(ViolentCrimePerCapitaPerArea2017,list("Unassigned -- Jail",0,0))
ViolentCrimePerCapitaPerArea2016 <- Violent_Crime_in_2016 %>%
group_by(Community) %>%
summarize(ViolentCrimeFrequency16=n())
ViolentCrimePerCapitaPerArea2016 <- mutate(ViolentCrimePerCapitaPerArea2016,ViolentCrimePer1000inhabitants16=((ViolentCrimePerCapitaPerArea2016$ViolentCrimeFrequency16/population_data$tpop20)*1000))
ViolentCrimePerCapitaPerArea2016 <- rbind(ViolentCrimePerCapitaPerArea2016,list("Unassigned -- Jail",0,0))
ViolentCrimePerCapitaPerArea2015 <- Violent_Crime_in_2015 %>%
group_by(Community) %>%
summarize(ViolentCrimeFrequency15=n())
ViolentCrimePerCapitaPerArea2015 <- mutate(ViolentCrimePerCapitaPerArea2015,ViolentCrimePer1000inhabitants15=((ViolentCrimePerCapitaPerArea2015$ViolentCrimeFrequency15/population_data$tpop20)*1000))
ViolentCrimePerCapitaPerArea2015 <- rbind(ViolentCrimePerCapitaPerArea2015,list("Unassigned -- Jail",0,0))
ViolentCrimePerCapitaPerArea2014 <- Violent_Crime_in_2014 %>%
group_by(Community) %>%
summarize(ViolentCrimeFrequency14=n())
ViolentCrimePerCapitaPerArea2014 <- mutate(ViolentCrimePerCapitaPerArea2014,ViolentCrimePer1000inhabitants14=((ViolentCrimePerCapitaPerArea2014$ViolentCrimeFrequency14/population_data$tpop20)*1000))
ViolentCrimePerCapitaPerArea2014 <- rbind(ViolentCrimePerCapitaPerArea2014,list("Unassigned -- Jail",0,0))
Violent_crime_evolution <- ViolentCrimePerCapitaPerArea2021 %>%
left_join(ViolentCrimePerCapitaPerArea2020,by="Community") %>%
left_join(ViolentCrimePerCapitaPerArea2019,by="Community") %>%
left_join(ViolentCrimePerCapitaPerArea2018,by="Community") %>%
left_join(ViolentCrimePerCapitaPerArea2017,by="Community") %>%
left_join(ViolentCrimePerCapitaPerArea2016,by="Community") %>%
left_join(ViolentCrimePerCapitaPerArea2015,by="Community") %>%
left_join(ViolentCrimePerCapitaPerArea2014,by="Community")
Community_data <- Community_data %>%
left_join(Violent_crime_evolution,by="Community")
Violent_Crime_Yearly_evolution_map <- crime_data_with_areas %>%
filter(VIO_PROP_CFS=="VIOLENT") %>%
count(year=floor_date(CrimeDateTime,"year")) %>%
ggplot(aes(year,n))+geom_line()+
scale_x_date(limits = c(as.Date("2014-01-01"), as.Date("2020-12-31"))) +
labs(title = "Overall, violent crime seems to have decreased for the 2017 to 2020 period",x="Year",y="Violent crime occurences")
Violent_Crime_Yearly_evolution_map
#______________
Property_Crime_in_2021 <- crime_data_with_areas %>% filter(CrimeDateTime >= as.Date("2021-01-01") & CrimeDateTime <= as.Date("2021-12-31")) %>% filter(VIO_PROP_CFS=="PROPERTY")
Property_Crime_in_2020 <- crime_data_with_areas %>% filter(CrimeDateTime >= as.Date("2020-01-01") & CrimeDateTime <= as.Date("2020-12-31")) %>% filter(VIO_PROP_CFS=="PROPERTY")
Property_Crime_in_2019 <- crime_data_with_areas %>% filter(CrimeDateTime >= as.Date("2019-01-01") & CrimeDateTime <= as.Date("2019-12-31")) %>% filter(VIO_PROP_CFS=="PROPERTY")
Property_Crime_in_2018 <- crime_data_with_areas %>% filter(CrimeDateTime >= as.Date("2018-01-01") & CrimeDateTime <= as.Date("2018-12-31")) %>% filter(VIO_PROP_CFS=="PROPERTY")
Property_Crime_in_2017 <- crime_data_with_areas %>% filter(CrimeDateTime >= as.Date("2017-01-01") & CrimeDateTime <= as.Date("2017-12-31")) %>% filter(VIO_PROP_CFS=="PROPERTY")
Property_Crime_in_2016 <- crime_data_with_areas %>% filter(CrimeDateTime >= as.Date("2016-01-01") & CrimeDateTime <= as.Date("2016-12-31")) %>% filter(VIO_PROP_CFS=="PROPERTY")
Property_Crime_in_2015 <- crime_data_with_areas %>% filter(CrimeDateTime >= as.Date("2015-01-01") & CrimeDateTime <= as.Date("2015-12-31")) %>% filter(VIO_PROP_CFS=="PROPERTY")
Property_Crime_in_2014 <- crime_data_with_areas %>% filter(CrimeDateTime >= as.Date("2014-01-01") & CrimeDateTime <= as.Date("2014-12-31")) %>% filter(VIO_PROP_CFS=="PROPERTY")
PropertyCrimePerCapitaPerArea2021 <- Property_Crime_in_2021 %>%
group_by(Community) %>%
summarize(PropertyCrimeFrequency21=n())
PropertyCrimePerCapitaPerArea2021 <- mutate(PropertyCrimePerCapitaPerArea2021,PropertyCrimePer1000inhabitants21=((PropertyCrimePerCapitaPerArea2021$PropertyCrimeFrequency21/population_data$tpop20)*1000))
PropertyCrimePerCapitaPerArea2021 <- rbind(PropertyCrimePerCapitaPerArea2021,list("Unassigned -- Jail",0,0))
PropertyCrimePerCapitaPerArea2020 <- Property_Crime_in_2020 %>%
group_by(Community) %>%
summarize(PropertyCrimeFrequency20=n())
PropertyCrimePerCapitaPerArea2020 <- mutate(PropertyCrimePerCapitaPerArea2020,PropertyCrimePer1000inhabitants20=((PropertyCrimePerCapitaPerArea2020$PropertyCrimeFrequency20/population_data$tpop20)*1000))
PropertyCrimePerCapitaPerArea2020 <- rbind(PropertyCrimePerCapitaPerArea2020,list("Unassigned -- Jail",0,0))
PropertyCrimePerCapitaPerArea2019 <- Property_Crime_in_2019 %>%
group_by(Community) %>%
summarize(PropertyCrimeFrequency19=n())
PropertyCrimePerCapitaPerArea2019 <- mutate(PropertyCrimePerCapitaPerArea2019,PropertyCrimePer1000inhabitants19=((PropertyCrimePerCapitaPerArea2019$PropertyCrimeFrequency19/population_data$tpop20)*1000))
PropertyCrimePerCapitaPerArea2019 <- rbind(PropertyCrimePerCapitaPerArea2019,list("Unassigned -- Jail",0,0))
PropertyCrimePerCapitaPerArea2018 <- Property_Crime_in_2018 %>%
group_by(Community) %>%
summarize(PropertyCrimeFrequency18=n())
PropertyCrimePerCapitaPerArea2018 <- mutate(PropertyCrimePerCapitaPerArea2018,PropertyCrimePer1000inhabitants18=((PropertyCrimePerCapitaPerArea2018$PropertyCrimeFrequency18/population_data$tpop20)*1000))
PropertyCrimePerCapitaPerArea2018 <- rbind(PropertyCrimePerCapitaPerArea2018,list("Unassigned -- Jail",0,0))
PropertyCrimePerCapitaPerArea2017 <- Property_Crime_in_2017 %>%
group_by(Community) %>%
summarize(PropertyCrimeFrequency17=n())
PropertyCrimePerCapitaPerArea2017 <- mutate(PropertyCrimePerCapitaPerArea2017,PropertyCrimePer1000inhabitants17=((PropertyCrimePerCapitaPerArea2017$PropertyCrimeFrequency17/population_data$tpop20)*1000))
PropertyCrimePerCapitaPerArea2017 <- rbind(PropertyCrimePerCapitaPerArea2017,list("Unassigned -- Jail",0,0))
PropertyCrimePerCapitaPerArea2016 <- Property_Crime_in_2016 %>%
group_by(Community) %>%
summarize(PropertyCrimeFrequency16=n())
PropertyCrimePerCapitaPerArea2016 <- mutate(PropertyCrimePerCapitaPerArea2016,PropertyCrimePer1000inhabitants16=((PropertyCrimePerCapitaPerArea2016$PropertyCrimeFrequency16/population_data$tpop20)*1000))
PropertyCrimePerCapitaPerArea2016 <- rbind(PropertyCrimePerCapitaPerArea2016,list("Unassigned -- Jail",0,0))
PropertyCrimePerCapitaPerArea2015 <- Property_Crime_in_2015 %>%
group_by(Community) %>%
summarize(PropertyCrimeFrequency15=n())
PropertyCrimePerCapitaPerArea2015 <- mutate(PropertyCrimePerCapitaPerArea2015,PropertyCrimePer1000inhabitants15=((PropertyCrimePerCapitaPerArea2015$PropertyCrimeFrequency15/population_data$tpop20)*1000))
PropertyCrimePerCapitaPerArea2015 <- rbind(PropertyCrimePerCapitaPerArea2015,list("Unassigned -- Jail",0,0))
PropertyCrimePerCapitaPerArea2014 <- Property_Crime_in_2014 %>%
group_by(Community) %>%
summarize(PropertyCrimeFrequency14=n())
PropertyCrimePerCapitaPerArea2014 <- mutate(PropertyCrimePerCapitaPerArea2014,PropertyCrimePer1000inhabitants14=((PropertyCrimePerCapitaPerArea2014$PropertyCrimeFrequency14/population_data$tpop20)*1000))
PropertyCrimePerCapitaPerArea2014 <- rbind(PropertyCrimePerCapitaPerArea2014,list("Unassigned -- Jail",0,0))
Property_crime_evolution <- PropertyCrimePerCapitaPerArea2021 %>%
left_join(PropertyCrimePerCapitaPerArea2020,by="Community") %>%
left_join(PropertyCrimePerCapitaPerArea2019,by="Community") %>%
left_join(PropertyCrimePerCapitaPerArea2018,by="Community") %>%
left_join(PropertyCrimePerCapitaPerArea2017,by="Community") %>%
left_join(PropertyCrimePerCapitaPerArea2016,by="Community") %>%
left_join(PropertyCrimePerCapitaPerArea2015,by="Community") %>%
left_join(PropertyCrimePerCapitaPerArea2014,by="Community")
Community_data <- Community_data %>%
left_join(Property_crime_evolution,by="Community")
Property_Crime_Yearly_evolution_map <- crime_data_with_areas %>%
filter(VIO_PROP_CFS=="PROPERTY") %>%
count(year=floor_date(CrimeDateTime,"year")) %>%
ggplot(aes(year,n))+geom_line()+
scale_x_date(limits = c(as.Date("2014-01-01"), as.Date("2020-12-31"))) +
labs(title = "Overall, property crime seems to have decreased for the 2017 to 2020 period",x="Year",y="Property crime occurences")
Property_Crime_Yearly_evolution_map
We can make the exact same computation to calculate felony and misdemeanor evolution.
Felony_in_2021 <- crime_data_with_areas %>% filter(CrimeDateTime >= as.Date("2021-01-01") & CrimeDateTime <= as.Date("2021-12-31")) %>% filter(Category=="Felony")
Felony_in_2020 <- crime_data_with_areas %>% filter(CrimeDateTime >= as.Date("2020-01-01") & CrimeDateTime <= as.Date("2020-12-31")) %>% filter(Category=="Felony")
Felony_in_2019 <- crime_data_with_areas %>% filter(CrimeDateTime >= as.Date("2019-01-01") & CrimeDateTime <= as.Date("2019-12-31")) %>% filter(Category=="Felony")
Felony_in_2018 <- crime_data_with_areas %>% filter(CrimeDateTime >= as.Date("2018-01-01") & CrimeDateTime <= as.Date("2018-12-31")) %>% filter(Category=="Felony")
Felony_in_2017 <- crime_data_with_areas %>% filter(CrimeDateTime >= as.Date("2017-01-01") & CrimeDateTime <= as.Date("2017-12-31")) %>% filter(Category=="Felony")
Felony_in_2016 <- crime_data_with_areas %>% filter(CrimeDateTime >= as.Date("2016-01-01") & CrimeDateTime <= as.Date("2016-12-31")) %>% filter(Category=="Felony")
Felony_in_2015 <- crime_data_with_areas %>% filter(CrimeDateTime >= as.Date("2015-01-01") & CrimeDateTime <= as.Date("2015-12-31")) %>% filter(Category=="Felony")
Felony_in_2014 <- crime_data_with_areas %>% filter(CrimeDateTime >= as.Date("2014-01-01") & CrimeDateTime <= as.Date("2014-12-31")) %>% filter(Category=="Felony")
FelonyPerCapitaPerArea2021 <- Felony_in_2021 %>%
group_by(Community) %>%
summarize(FelonyFrequency21=n())
FelonyPerCapitaPerArea2021 <- mutate(FelonyPerCapitaPerArea2021,FelonyPer1000inhabitants21=((FelonyPerCapitaPerArea2021$FelonyFrequency21/population_data$tpop20)*1000))
FelonyPerCapitaPerArea2021 <- rbind(FelonyPerCapitaPerArea2021,list("Unassigned -- Jail",0,0))
FelonyPerCapitaPerArea2020 <- Felony_in_2020 %>%
group_by(Community) %>%
summarize(FelonyFrequency20=n())
FelonyPerCapitaPerArea2020 <- mutate(FelonyPerCapitaPerArea2020,FelonyPer1000inhabitants20=((FelonyPerCapitaPerArea2020$FelonyFrequency20/population_data$tpop20)*1000))
FelonyPerCapitaPerArea2020 <- rbind(FelonyPerCapitaPerArea2020,list("Unassigned -- Jail",0,0))
FelonyPerCapitaPerArea2019 <- Felony_in_2019 %>%
group_by(Community) %>%
summarize(FelonyFrequency19=n())
FelonyPerCapitaPerArea2019 <- mutate(FelonyPerCapitaPerArea2019,FelonyPer1000inhabitants19=((FelonyPerCapitaPerArea2019$FelonyFrequency19/population_data$tpop20)*1000))
FelonyPerCapitaPerArea2019 <- rbind(FelonyPerCapitaPerArea2019,list("Unassigned -- Jail",0,0))
FelonyPerCapitaPerArea2018 <- Felony_in_2018 %>%
group_by(Community) %>%
summarize(FelonyFrequency18=n())
FelonyPerCapitaPerArea2018 <- mutate(FelonyPerCapitaPerArea2018,FelonyPer1000inhabitants18=((FelonyPerCapitaPerArea2018$FelonyFrequency18/population_data$tpop20)*1000))
FelonyPerCapitaPerArea2018 <- rbind(FelonyPerCapitaPerArea2018,list("Unassigned -- Jail",0,0))
FelonyPerCapitaPerArea2017 <- Felony_in_2017 %>%
group_by(Community) %>%
summarize(FelonyFrequency17=n())
FelonyPerCapitaPerArea2017 <- mutate(FelonyPerCapitaPerArea2017,FelonyPer1000inhabitants17=((FelonyPerCapitaPerArea2017$FelonyFrequency17/population_data$tpop20)*1000))
FelonyPerCapitaPerArea2017 <- rbind(FelonyPerCapitaPerArea2017,list("Unassigned -- Jail",0,0))
FelonyPerCapitaPerArea2016 <- Felony_in_2016 %>%
group_by(Community) %>%
summarize(FelonyFrequency16=n())
FelonyPerCapitaPerArea2016 <- mutate(FelonyPerCapitaPerArea2016,FelonyPer1000inhabitants16=((FelonyPerCapitaPerArea2016$FelonyFrequency16/population_data$tpop20)*1000))
FelonyPerCapitaPerArea2016 <- rbind(FelonyPerCapitaPerArea2016,list("Unassigned -- Jail",0,0))
FelonyPerCapitaPerArea2015 <- Felony_in_2015 %>%
group_by(Community) %>%
summarize(FelonyFrequency15=n())
FelonyPerCapitaPerArea2015 <- mutate(FelonyPerCapitaPerArea2015,FelonyPer1000inhabitants15=((FelonyPerCapitaPerArea2015$FelonyFrequency15/population_data$tpop20)*1000))
FelonyPerCapitaPerArea2015 <- rbind(FelonyPerCapitaPerArea2015,list("Unassigned -- Jail",0,0))
FelonyPerCapitaPerArea2014 <- Felony_in_2014 %>%
group_by(Community) %>%
summarize(FelonyFrequency14=n())
FelonyPerCapitaPerArea2014 <- mutate(FelonyPerCapitaPerArea2014,FelonyPer1000inhabitants14=((FelonyPerCapitaPerArea2014$FelonyFrequency14/population_data$tpop20)*1000))
FelonyPerCapitaPerArea2014 <- rbind(FelonyPerCapitaPerArea2014,list("Unassigned -- Jail",0,0))
Felony_evolution <- FelonyPerCapitaPerArea2021 %>%
left_join(FelonyPerCapitaPerArea2020,by="Community") %>%
left_join(FelonyPerCapitaPerArea2019,by="Community") %>%
left_join(FelonyPerCapitaPerArea2018,by="Community") %>%
left_join(FelonyPerCapitaPerArea2017,by="Community") %>%
left_join(FelonyPerCapitaPerArea2016,by="Community") %>%
left_join(FelonyPerCapitaPerArea2015,by="Community") %>%
left_join(FelonyPerCapitaPerArea2014,by="Community")
Community_data <- Community_data %>%
left_join(Felony_evolution,by="Community")
Felony_Yearly_evolution_map <- crime_data_with_areas %>%
filter(Category=="Felony") %>%
count(year=floor_date(CrimeDateTime,"year")) %>%
ggplot(aes(year,n))+geom_line()+
scale_x_date(limits = c(as.Date("2014-01-01"), as.Date("2020-12-31"))) +
labs(title = "In Baltimore, Felony started to decrease as from 2017",x="Year",y="Felony occurences")
Felony_Yearly_evolution_map
#___________
Misdemeanor_in_2021 <- crime_data_with_areas %>% filter(CrimeDateTime >= as.Date("2021-01-01") & CrimeDateTime <= as.Date("2021-12-31")) %>% filter(Category=="Misdemeanor")
Misdemeanor_in_2020 <- crime_data_with_areas %>% filter(CrimeDateTime >= as.Date("2020-01-01") & CrimeDateTime <= as.Date("2020-12-31")) %>% filter(Category=="Misdemeanor")
Misdemeanor_in_2019 <- crime_data_with_areas %>% filter(CrimeDateTime >= as.Date("2019-01-01") & CrimeDateTime <= as.Date("2019-12-31")) %>% filter(Category=="Misdemeanor")
Misdemeanor_in_2018 <- crime_data_with_areas %>% filter(CrimeDateTime >= as.Date("2018-01-01") & CrimeDateTime <= as.Date("2018-12-31")) %>% filter(Category=="Misdemeanor")
Misdemeanor_in_2017 <- crime_data_with_areas %>% filter(CrimeDateTime >= as.Date("2017-01-01") & CrimeDateTime <= as.Date("2017-12-31")) %>% filter(Category=="Misdemeanor")
Misdemeanor_in_2016 <- crime_data_with_areas %>% filter(CrimeDateTime >= as.Date("2016-01-01") & CrimeDateTime <= as.Date("2016-12-31")) %>% filter(Category=="Misdemeanor")
Misdemeanor_in_2015 <- crime_data_with_areas %>% filter(CrimeDateTime >= as.Date("2015-01-01") & CrimeDateTime <= as.Date("2015-12-31")) %>% filter(Category=="Misdemeanor")
Misdemeanor_in_2014 <- crime_data_with_areas %>% filter(CrimeDateTime >= as.Date("2014-01-01") & CrimeDateTime <= as.Date("2014-12-31")) %>% filter(Category=="Misdemeanor")
MisdemeanorPerCapitaPerArea2021 <- Misdemeanor_in_2021 %>%
group_by(Community) %>%
summarize(MisdemeanorFrequency21=n())
MisdemeanorPerCapitaPerArea2021 <- mutate(MisdemeanorPerCapitaPerArea2021,MisdemeanorPer1000inhabitants21=((MisdemeanorPerCapitaPerArea2021$MisdemeanorFrequency21/population_data$tpop20)*1000))
MisdemeanorPerCapitaPerArea2021 <- rbind(MisdemeanorPerCapitaPerArea2021,list("Unassigned -- Jail",0,0))
MisdemeanorPerCapitaPerArea2020 <- Misdemeanor_in_2020 %>%
group_by(Community) %>%
summarize(MisdemeanorFrequency20=n())
MisdemeanorPerCapitaPerArea2020 <- mutate(MisdemeanorPerCapitaPerArea2020,MisdemeanorPer1000inhabitants20=((MisdemeanorPerCapitaPerArea2020$MisdemeanorFrequency20/population_data$tpop20)*1000))
MisdemeanorPerCapitaPerArea2020 <- rbind(MisdemeanorPerCapitaPerArea2020,list("Unassigned -- Jail",0,0))
MisdemeanorPerCapitaPerArea2019 <- Misdemeanor_in_2019 %>%
group_by(Community) %>%
summarize(MisdemeanorFrequency19=n())
MisdemeanorPerCapitaPerArea2019 <- mutate(MisdemeanorPerCapitaPerArea2019,MisdemeanorPer1000inhabitants19=((MisdemeanorPerCapitaPerArea2019$MisdemeanorFrequency19/population_data$tpop20)*1000))
MisdemeanorPerCapitaPerArea2019 <- rbind(MisdemeanorPerCapitaPerArea2019,list("Unassigned -- Jail",0,0))
MisdemeanorPerCapitaPerArea2018 <- Misdemeanor_in_2018 %>%
group_by(Community) %>%
summarize(MisdemeanorFrequency18=n())
MisdemeanorPerCapitaPerArea2018 <- mutate(MisdemeanorPerCapitaPerArea2018,MisdemeanorPer1000inhabitants18=((MisdemeanorPerCapitaPerArea2018$MisdemeanorFrequency18/population_data$tpop20)*1000))
MisdemeanorPerCapitaPerArea2018 <- rbind(MisdemeanorPerCapitaPerArea2018,list("Unassigned -- Jail",0,0))
MisdemeanorPerCapitaPerArea2017 <- Misdemeanor_in_2017 %>%
group_by(Community) %>%
summarize(MisdemeanorFrequency17=n())
MisdemeanorPerCapitaPerArea2017 <- mutate(MisdemeanorPerCapitaPerArea2017,MisdemeanorPer1000inhabitants17=((MisdemeanorPerCapitaPerArea2017$MisdemeanorFrequency17/population_data$tpop20)*1000))
MisdemeanorPerCapitaPerArea2017 <- rbind(MisdemeanorPerCapitaPerArea2017,list("Unassigned -- Jail",0,0))
MisdemeanorPerCapitaPerArea2016 <- Misdemeanor_in_2016 %>%
group_by(Community) %>%
summarize(MisdemeanorFrequency16=n())
MisdemeanorPerCapitaPerArea2016 <- mutate(MisdemeanorPerCapitaPerArea2016,MisdemeanorPer1000inhabitants16=((MisdemeanorPerCapitaPerArea2016$MisdemeanorFrequency16/population_data$tpop20)*1000))
MisdemeanorPerCapitaPerArea2016 <- rbind(MisdemeanorPerCapitaPerArea2016,list("Unassigned -- Jail",0,0))
MisdemeanorPerCapitaPerArea2015 <- Misdemeanor_in_2015 %>%
group_by(Community) %>%
summarize(MisdemeanorFrequency15=n())
MisdemeanorPerCapitaPerArea2015 <- mutate(MisdemeanorPerCapitaPerArea2015,MisdemeanorPer1000inhabitants15=((MisdemeanorPerCapitaPerArea2015$MisdemeanorFrequency15/population_data$tpop20)*1000))
MisdemeanorPerCapitaPerArea2015 <- rbind(MisdemeanorPerCapitaPerArea2015,list("Unassigned -- Jail",0,0))
MisdemeanorPerCapitaPerArea2014 <- Misdemeanor_in_2014 %>%
group_by(Community) %>%
summarize(MisdemeanorFrequency14=n())
MisdemeanorPerCapitaPerArea2014 <- mutate(MisdemeanorPerCapitaPerArea2014,MisdemeanorPer1000inhabitants14=((MisdemeanorPerCapitaPerArea2014$MisdemeanorFrequency14/population_data$tpop20)*1000))
MisdemeanorPerCapitaPerArea2014 <- rbind(MisdemeanorPerCapitaPerArea2014,list("Unassigned -- Jail",0,0))
Misdemeanor_evolution <- MisdemeanorPerCapitaPerArea2021 %>%
left_join(MisdemeanorPerCapitaPerArea2020,by="Community") %>%
left_join(MisdemeanorPerCapitaPerArea2019,by="Community") %>%
left_join(MisdemeanorPerCapitaPerArea2018,by="Community") %>%
left_join(MisdemeanorPerCapitaPerArea2017,by="Community") %>%
left_join(MisdemeanorPerCapitaPerArea2016,by="Community") %>%
left_join(MisdemeanorPerCapitaPerArea2015,by="Community") %>%
left_join(MisdemeanorPerCapitaPerArea2014,by="Community")
Community_data <- Community_data %>%
left_join(Misdemeanor_evolution,by="Community")
Misdemeanor_Yearly_evolution_map <- crime_data_with_areas %>%
filter(Category=="Misdemeanor") %>%
count(year=floor_date(CrimeDateTime,"year")) %>%
ggplot(aes(year,n))+geom_line()+
scale_x_date(limits = c(as.Date("2014-01-01"), as.Date("2020-12-31"))) +
labs(title = "In Baltimore, Misdemeanor started to decrease as from 2017",x="Year",y="Misdemeanor occurences")
Misdemeanor_Yearly_evolution_map